# -*- coding: utf-8 -*- 


class Statistics:
    '''
    Esta class cria uma estrutura de dicionarios e listas a partir dos dados __data 
    '''
    def __init__(self,data):
        self.__data = data
        self.__data
    
    '''
    Cria a estrutura TeachersPerEstablisment
    '''
    def getTeachersPerEstablisment(self):
        table = {}
        for reg in self.__data:            
            if not(reg[6] in table):
                table[reg[6]] = {}
            year = table[reg[6]]
            
            if not(reg[8] in year):
                year[reg[8]] = []                
            scools = year[reg[8]]
            scools.append(reg)
            pass
        return table
    
    '''
    Cria a estrutura TeachersEstYearCat
    '''
    def getTeachersEstYearCat(self): 
        table = {}
        for reg in self.__data:            
            if not(reg[6] in table):
                table[reg[6]] = {}
            year = table[reg[6]]
            
            if not(reg[8] in year):
                year[reg[8]] = {}                
            scools = year[reg[8]]
            
            if not(reg[4] in scools):
                scools[reg[4]] = []            
            catgory = scools[reg[4]]            
            catgory.append(reg)
            pass
        return table
    
    '''
    Cria a estrutura TeachersEstYearDegree
    '''
    def getTeachersEstYearDegree(self):
        table = {}
        for reg in self.__data:            
            if not(reg[6] in table):
                table[reg[6]] = {}
            year = table[reg[6]]
            
            if not(reg[8] in year):
                year[reg[8]] = {}                
            scools = year[reg[8]]
            
            if not(reg[2] in scools):
                scools[reg[2]] = [] 
                           
            degree = scools[reg[2]]            
            degree.append(reg)
            pass
        return table
    
    '''
    Escolhida uma ecola verifica o numero de professores em todos os anos e retorna os anos em que existe (legend)
    e a contagem de professores.
    '''
    def treeLevelsSeach(self,scool,data):
        values = []
        legend = []
        try:
            sData = sorted(data.items())
        except:
            sData = data
        for val in sData:
            for sc,tea in val[1].iteritems():
                if scool == sc:
                    legend.append(val[0].encode("utf-8"))
                    values.append(len(tea))
        return legend,values
        
    ''''
    Verifica uma categoria ou grau, dependendo da escolha pretebdida, em todos os anos e mostra o numero de professores em todos os anos
    '''
    def fourLevelsSeach(self,pcat,scool,data):
        values = []
        legend = []
        try:
            sData = sorted(data.items())
        except:
            sData = data
        for val in sData:
            for sc,cats in val[1].iteritems():
                if sc == scool:
                    for cat,teachers in cats.iteritems():
                        if cat == pcat:
                            legend.append(val[0].encode("utf-8"))
                            values.append(len(teachers))
        return legend,values

    '''
    Escolhida uma ecola verifica o numero de professores em todos os anos e retorna os anos em que existe (legend)
    e a contagem de professores.
    '''
    def JTreeLevelsSeach(self,scool,data):
        values = []
        legend = []
        for year,scools in data.iteritems():
            for sc, dat in scools.iteritems():
                if scool == sc:
                    legend.append(year.encode("utf-8"))
                    values.append(len(dat))
        return legend,values
        
    ''''
    Verifica uma categoria ou grau, dependendo da escolha pretebdida, em todos os anos e mostra o numero de professores em todos os anos
    '''
    def JFourLevelsSeach(self,pcat,scool,data):
        values = []
        legend = []
        for year,scools in data.iteritems():
            for sc, dat in scools.iteritems():
                if sc == scool:
                    for cat,teachers in dat.iteritems():
                        if cat == pcat:
                            legend.append(year.encode("utf-8"))
                            values.append(len(teachers))
        return legend,values













